<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="../react18/react.development.js"></script>
  <script src="../react18/react-dom.development.js"></script>
  <script src="../react18/babel.min.js"></script>
  <script src="../react18/prop-types.js"></script>
</head>

<body>
  <div id="app"></div>
  <script type="text/babel">
    /* 
      
    */
   class App extends React.Component{
    state = {
      name: '李淳罡',
      age: 60,
      hobby: '两袖青蛇'
    }
    render(){
      const {name,age,hobby} = this.state
      return (
        <div>
         姓名：<input type="text" value={name} onChange={this.change('name')}/>  
         <br/>
         年龄：<input type="text" value={age} onChange={this.change('age')}/>
         <br/>
         爱好：<input type="text" value={hobby} onChange={this.change('hobby')}/>
         <br/>
         <button onClick={this.handle}>提交</button>
        </div>
      )
    }
    change = (pp) =>{
        return (e) =>{
            this.setState({
              [pp]: e.target.value
            })
        }
    }
    handle = () =>{
      const {name,age,hobby} = this.state
      console.log(name,age,hobby);
    }
   }
   ReactDOM.createRoot(document.getElementById('app')).render(<App/>)
    // class App extends React.Component{
    //   state = {
    //     name:"laowang",
    //     age:18,
    //     hobby:"吃饭"
    //   }
    //   render(){
    //     const {name,age,hobby} = this.state;
    //     return (
    //       <div>
    //         姓名: <input type="text" value={name} onChange={this.change('name')} />
    //         <br/>
    //         年龄: <input type="text" value={age} onChange={this.change('age')}/>
    //         <br/>
    //         爱好: <input type="text" value={hobby} onChange={this.change('hobby')} />  
    //         <br/>
    //         <button onClick={this.handle}>提交</button>  
    //       </div>
    //     )
    //   }

    //   change = (item)=>{
    //       return (e)=>{
    //         this.setState({[item]:e.target.value})
    //       }
    //   }
    //   handle = ()=>{
    //     const {name,age,hobby} = this.state
    //     console.log(name,age,hobby);
    //   }
    // }

    

    // const root = ReactDOM.createRoot(document.getElementById('app'));
    // root.render(<App/>)
    // class App extends React.Component{
    //   state = {
    //     name:"laowang",
    //     age:18,
    //     hobby:"吃饭"
    //   }
    //   render(){
    //     const {name,age,hobby} = this.state;
    //     return (
    //       <div>
    //         姓名: <input type="text" value={name} onChange={this.changeForm("name")} />
    //         <br/>
    //         年龄: <input type="text" value={age} onChange={this.changeForm("age")} />
    //         <br/>
    //         爱好: <input type="text" value={hobby} onChange={this.changeForm("hobby")} />  
    //         <br/>
    //         <button onClick={this.handle}>提交</button>  
    //       </div>
    //     )
    //   }

    //   //changeForm函数在虚拟DOM渲染的时候就已经调用了,会把这个函数的返回值交给了onChange
    //   changeForm = (type) => {
    //     console.log(type);

    //     //返回的函数才是真正的onChange事件函数
    //     return (e) => {
    //       const {value} = e.target;
    //       this.setState({[type]:value})
    //     }
    //   }


    //   handle = () => {
    //     const {name,age,hobby} = this.state;
    //     console.log(name,age,hobby);
    //   }
    // }

    

    // const root = ReactDOM.createRoot(document.getElementById('app'));
    // root.render(<App/>)

  </script>
</body>

</html>